[組織ポリシー]均一なバケットレベルのアクセスの適用を試してみた

[組織ポリシー]均一なバケットレベルのアクセスの適用を試してみた

本記事は「均一なバケットレベルのアクセスの適用」ポリシーについて解説し、設定方法や影響を説明しています。本ポリシーは2024年初頭以降に作成された組織ではデフォルトで有効となっています。
Clock Icon2024.08.01

概要

数ある組織ポリシーの中で、今回取り上げるのは均一なバケットレベルのアクセスの適用というポリシーです。
本ポリシーを用いると、バケット作成時にアクセス制御の項目で均一(Uniform)の設定が必須となります。本ポリシー未適用の場合なら均一(Uniform)ときめ細かい管理(Fine-grained)の2種類から選ぶことができます。

組織ポリシー名 内容 制約
均一なバケットレベルのアクセスの適用 このブール型制約を True に設定すると、バケットで、均一なバケットレベルのアクセスを使用することが必須となります。組織リソース内に新規作成するバケットでは、均一なバケットレベルのアクセスを有効にする必要があります。組織リソース内の既存バケットで、均一なバケットレベルのアクセスを無効にすることはできません。この制約は遡って適用されることはありません。均一なバケットレベルのアクセスが無効になっている既存のバケットでは、無効なままです。この制約のデフォルト値はFalse です。均一なバケットレベルのアクセスでは、バケット内の Cloud Storage オブジェクトに割り当てられた ACL の評価は無効になります。そのため、IAM ポリシーによってのみ、これらのバケット内のオブジェクトへのアクセス権が付与されます。 constraints/storage.uniformBucketLevelAccess

注意点として、本ポリシーは2024年以降に新しく作成されたGoogle Cloud組織の場合デフォルトで有効になっています(2024年のいつ時点からかは把握できておりません。7月に作成した組織では有効になっていました)。

設定方法

本ポリシーはブール型制約となっており、オンオフの2択となります。また、本ポリシーは遡及して適用されることはないため本ポリシー設定前に作成したバケットのアクセスレベルがきめ細かい管理になっていた場合でも均一に修正されたりバケットがエラーになるということはありません。

設定してみる

IAMと管理から組織ポリシーを選択します。画面真ん中あたりのフィルタにconstraints/storage.uniformBucketLevelAccessを入力してフィルタします。
スクリーンショット 2024-08-01 15.34.29

Enforce uniform bucket-level access(均一なバケットレベルのアクセスの適用)のポリシーをクリックすると適用状況の確認とポリシーを管理のリンクを見ることができます。
スクリーンショット 2024-08-01 15.45.47

上記はすでに本制約をオンにした状態の画像です。2024年7月に作成した組織のためすでにオンになっていました。それではポリシーを管理を押下して設定してみます。
スクリーンショット 2024-08-01 15.54.48

プロジェクト単位で組織ポリシーを設定する場合ポリシーのソースで親のポリシーをオーバーライドするを押下します。この設定をすることで親のポリシーをプロジェクトで上書きして設定することができます。
ルールに関してはオンを設定します。本ポリシーはブール型制約となっており、オン→有効 オフ→無効という設定値となります。設定完了後はポリシーを設定を押下します。

バケットを作成して確認してみる

まずはGUIで確認してみます。バケットの作成画面でオブジェクトへのアクセスを制御する方法を選択するをクリックしてみます。
スクリーンショット 2024-08-01 15.59.28

アクセス制御で均一が選択されておりきめ細かい管理はグレーアウトして選択することができませんでした。見事。

続いてCLIでバケットを作成してみます。作成時にはアクセスレベルはきめ細かい管理を指定してみます。

gcloud storage buckets create gs://BUCKET-NAME --no-uniform-bucket-level-access --location=asia-northeast1

--no-uniform-bucket-level-access引数を設定することできめ細かい管理指定となります。 上記コマンドを発行すると

Creating gs://BUCKET-NAME/...
ERROR: (gcloud.storage.buckets.create) HTTPError 412: Request violates constraint 'constraints/storage.uniformBucketLevelAccess'

上記通り、制約違反のエラーが発生します。CLIでもしっかり効果を発揮していますね。頼もしい。

まとめ

まずは3行まとめです。

  • 2024年初頭以降に作成した組織ではデフォルトでオンになっている
  • CLIでもGUIでもしっかり効果を発揮している
  • 遡及して適用されることはない(設定済みのバケットには影響ない)

そもそも本ポリシーを適用するか(均一かきめ細かい管理)迷った場合、弊社の以下の記事も見ていただければと思います。
https://dev.classmethod.jp/articles/cloud-storage-access-control/

最近作成した組織ではデフォルトで有効になっていること、基本的には均一が推奨されていること、を踏まえると個人的には本ポリシーは適用を考慮しても良いのではないかなと考えます。が、もちろんワークロードによるので適用を検討する場合は十分検証・検討の上実施したほうが良いものと考えます。
本記事が、組織ポリシーを調査している方の一助になれば幸いです。それではまた。

参考

https://cloud.google.com/resource-manager/docs/organization-policy/overview?hl=ja

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.